Add a Meeting Time distinct from the reservation window (#126) - #129
Open
pataniaeli wants to merge 1 commit into
Open
pataniaeli wants to merge 1 commit into
pataniaeli wants to merge 1 commit into
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
A booking's start and end times describe the reservation -- the window the room is held for, which is what CSC is told. They are not when the body meets: a committee that books 6:00-9:00 to allow for setup still tells its members 6:30. Every member-facing surface reported the reservation window, so every one of them answered the wrong question. Meeting Time is a `time` on the tables that own functional times -- the weekly series, its per-week occurrences, and one-time and tabling sessions. Nullable everywhere, with NULL meaning inherit and resolving in the end to start_time, the same convention weekly_room_occurrences already uses for room, time and status. Nothing needs backfilling and no insert path can break: a booking with no meeting time set reads exactly as it did before the column existed. The Slack committee reminder now states the meeting time alone rather than the reservation window, as the issue asks. My Rooms leads its cards, list rows and calendar entries with it, naming the window only when the two differ so the cards keep the height issue #78 settled on; the detail modal shows both, always. Both booking emails carry it, and a week whose only edit was to move when it meets now counts as moved, so its members are told. Applied to the database as migration `meeting_time`; rollback script included. Co-Authored-By: Claude Opus 5 <[email protected]>
pataniaeli
force-pushed
the
feat/issue-126-meeting-time
branch
from
September 16, 2026 20:42
e3a4905 to
2a9eb86
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #126
A booking's
start_timeandend_timedescribe the reservation — the window the room is held for, which is what CSC is told. They are not when the body meets: a committee that books 6:00–9:00 to allow for setup still tells its members 6:30. Every member-facing surface reported the reservation window, so every one of them answered the wrong question.The field
Meeting Time is a real
timevalue on the tables that own functional times:weekly_room_bookingsweekly_room_occurrencesone_time_room_bookingstabling_sessionsbookingsdeliberately gets no column — it carries purpose, scope and visibility, and has never held a time.Every column is nullable, and NULL means inherit, resolving in the end to
start_time— the same conventionweekly_room_occurrencesalready uses for room, time and status, and that #55 extended to purpose and hidden. Two things follow, both intended:NOT NULLcolumn would have had to be supplied by six write paths across three booking types, and any one missed is a 500 in production.The one cost: a weekly occurrence cannot say "this week, meet at the start time" while its series says otherwise. Setting it explicitly to the start time expresses the same thing, so it isn't worth the third state
hiddenneeded.lib/meeting-time.tsholds the precedence in one place — five callers apply it, and an inheritance rule applied inconsistently is worse than one that's wrong everywhere.Where it shows up
occurrenceMovedcounts it, so a week whose only edit was to move when it meets is reported to its members rather than changing silently.Editing
Every create and edit form gets a Meeting Time picker, pre-filled from the start time rather than sitting blank — an empty box invites retyping the start time by hand.
meetingTimeForStoragecollapses a value equal to the start time back to NULL on save, so the two stay tied together until someone genuinely separates them; move the reservation later and the booking doesn't keep claiming an old time. That collapse is deliberately not applied to a weekly occurrence's override, where NULL means "inherit the series" rather than "meet at the start time".Verification
tsc --noEmitandeslintclean on every changed file (two findings inbookings-tab.tsxandedit-weekly-form.tsxare pre-existing ondev).next buildpasses.HH:MM/HH:MM:SSshape difference,formatReminderoutput,flattenMyRoomsresolution for all three booking types, andoccurrenceMoved— all pass. The reminder renders as*Sustainability Committee* meets tomorrow — Monday, September 21, 6:30 PM, with 6:00 PM and 9:00 PM absent.Migration
supabase/migrations/20260915000000_meeting_time.sql, already applied to the live project as migrationmeeting_time— so the schema is ahead ofmainuntil this merges. Additive only: four nullable columns, no backfill, no constraints. Rollback atsupabase/migrations/rollback/20260915_meeting_time_rollback.sql.🤖 Generated with Claude Code